/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.colegiatura.beans;

import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.cip.esymons.colegiatura.bc.ColegiadoComiteLocalDelegate;
import org.cip.esymons.colegiatura.bc.ColegiadoDelegate;
import org.cip.esymons.colegiatura.bc.ComiteLocalDelegate;
import org.cip.esymons.colegiatura.be.Colegiado;
import org.cip.esymons.general.be.ColegiadoComiteLocal;
import org.cip.esymons.general.be.ComiteLocal;

/**
 *
 * @author ADMINISTRADOR
 */
public class colegiadoComiteLocalController {

    private ColegiadoDelegate delegadoColegiado;
    private ComiteLocalDelegate delegadoComite;
    private ColegiadoComiteLocalDelegate delegadoColegiadoComite;

    private Colegiado colegiado;
    private ComiteLocal comite;
    private ColegiadoComiteLocal colegiadoComite;

    private String codigoCIP;
    private boolean bandera;
    private List<ColegiadoComiteLocal> listaColegiadoComite;
    private Integer seleccion;
    private Integer cantidad;

    public colegiadoComiteLocalController() {

        delegadoColegiado = new ColegiadoDelegate();
        delegadoComite = new ComiteLocalDelegate();
        delegadoColegiadoComite = new ColegiadoComiteLocalDelegate();

        colegiado = new Colegiado();
        comite = new ComiteLocal();
        colegiadoComite = new ColegiadoComiteLocal();

        bandera = false;
        codigoCIP = "";

        listaColegiadoComite = new ArrayList<ColegiadoComiteLocal>();
        listaColegiadoComite = null;

    }

    public Integer getCantidad() {
        return cantidad;
    }

    public void setCantidad(Integer cantidad) {
        this.cantidad = cantidad;
    }

    public Integer getSeleccion() {
        return seleccion;
    }

    public void setSeleccion(Integer seleccion) {
        this.seleccion = seleccion;
    }

    public List<ColegiadoComiteLocal> getListaColegiadoComite() {
        return listaColegiadoComite;
    }

    public void setListaColegiadoComite(List<ColegiadoComiteLocal> listaColegiadoComite) {
        this.listaColegiadoComite = listaColegiadoComite;
    }

    public boolean getBandera() {
        return bandera;
    }

    public void setBandera(boolean bandera) {
        this.bandera = bandera;
    }

    public Colegiado getColegiado() {
        return colegiado;
    }

    public void setColegiado(Colegiado colegiado) {
        this.colegiado = colegiado;
    }

    public ColegiadoComiteLocal getColegiadoComite() {
        return colegiadoComite;
    }

    public void setColegiadoComite(ColegiadoComiteLocal colegiadoComite) {
        this.colegiadoComite = colegiadoComite;
    }

    public ComiteLocal getComite() {
        return comite;
    }

    public void setComite(ComiteLocal comite) {
        this.comite = comite;
    }

    public ColegiadoDelegate getDelegadoColegiado() {
        return delegadoColegiado;
    }

    public void setDelegadoColegiado(ColegiadoDelegate delegadoColegiado) {
        this.delegadoColegiado = delegadoColegiado;
    }

    public ColegiadoComiteLocalDelegate getDelegadoColegiadoComite() {
        return delegadoColegiadoComite;
    }

    public void setDelegadoColegiadoComite(ColegiadoComiteLocalDelegate delegadoColegiadoComite) {
        this.delegadoColegiadoComite = delegadoColegiadoComite;
    }

    public ComiteLocalDelegate getDelegadoComite() {
        return delegadoComite;
    }

    public void setDelegadoComite(ComiteLocalDelegate delegadoComite) {
        this.delegadoComite = delegadoComite;
    }

    public String getCodigoCIP() {
        return codigoCIP;
    }

    public void setCodigoCIP(String codigoCIP) {
        this.codigoCIP = codigoCIP;
    }

    public List<ColegiadoComiteLocal> getlistaColegiadoComiteLocal(){

        return delegadoColegiadoComite.findAll();
    }

    public String nuevo(){

        colegiado = new Colegiado();
        colegiadoComite = new ColegiadoComiteLocal();
        bandera = false;
        return "nuevo";
    }

    public String editar(){

        return "editar";
    }

    public String retornar(){
        colegiadoComite = new ColegiadoComiteLocal();
        return "listar";
    }

    public String remover(){

        delegadoColegiadoComite.remove(colegiadoComite);
        colegiadoComite = new ColegiadoComiteLocal();
        return null;
    }

     //BUSCAMOS EL COLEGIADO POR CIP
    public String buscaPorCip(){
       try {
           colegiado = new Colegiado();
           Integer cifras = codigoCIP.length();
             if(cifras<3){
                 codigoCIP = "0000"+ codigoCIP;
             }else{
                   if(cifras<4){
                       codigoCIP = "000"+codigoCIP;
                   }else{
                       if(cifras<5){
                           codigoCIP = "00"+codigoCIP;
                       }else{
                           if(cifras<6){
                              codigoCIP = "0"+codigoCIP;
                           }
                       }
                   }
             }
            colegiado = delegadoColegiado.buscaPorCip(codigoCIP);
            codigoCIP = "";
            bandera = true;
            return null;

        } catch (Exception e) {
            return null;
        }
    }

    public String guardarColegiadoComite(){

        colegiadoComite.setColCodigo(colegiado);
        colegiadoComite.setCcoEstado(true);
        delegadoColegiadoComite.create(colegiadoComite);
        colegiadoComite = new ColegiadoComiteLocal();
        mostrarMensaje("INFO: ", "Se registro satisfactoriamente...", FacesMessage.SEVERITY_INFO);
        
        return "listar";
    }

    public String editarColegiadocomite(){

        delegadoColegiadoComite.edit(colegiadoComite);
        colegiadoComite = new ColegiadoComiteLocal();
        mostrarMensaje("INFO: ", "Actualización registrada satisfactoriamente...", FacesMessage.SEVERITY_INFO);
        return "listar";
    }

    public List<ColegiadoComiteLocal> listaColegiadosOrdenCIP(){

        listaColegiadoComite = null;
        listaColegiadoComite =  delegadoColegiadoComite.listaColegiadoOrdenCip();
        cantidad = listaColegiadoComite.size();
        return listaColegiadoComite;
    }

    public List<ColegiadoComiteLocal> listaColegiadosOrdenApellidos(){

        listaColegiadoComite = null;
        listaColegiadoComite =  delegadoColegiadoComite.listaColegiadoOrdenApellidos();
        cantidad = listaColegiadoComite.size();
        return listaColegiadoComite;
    }

    public List<ColegiadoComiteLocal> listaColegiadosOrdenComite(){

        listaColegiadoComite = null;
        listaColegiadoComite =  delegadoColegiadoComite.listaColegiadoOrdenComite();
        cantidad = listaColegiadoComite.size();
        return listaColegiadoComite;
    }

    public String listaColegiadoComitePorOrden(){

        if(seleccion==null){
            seleccion = 1;
        }

        switch(seleccion){

            case 1 : listaColegiadosOrdenCIP();
                     break;
            case 2 : listaColegiadosOrdenApellidos();
                     break;
            case 3 : listaColegiadosOrdenComite();
                     break;
            case 4 : listaColegiadosPorComite();
                     break;
        }

        return null;
    }

    public List<ColegiadoComiteLocal> listaColegiadosPorComite(){

        listaColegiadoComite = null;
        listaColegiadoComite =  delegadoColegiadoComite.listaColegiadoPorComite(comite);
        cantidad = listaColegiadoComite.size();
        return listaColegiadoComite;
    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }


}
